<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>JavaScript内置对象</title>
		<link rel="stylesheet" type="text/css" href="css/reset.css"/>
		<link rel="stylesheet" type="text/css" href="css/common.css"/>
	</head>
	<body>
		<div class="web">
			<h1>JavaScript内置对象</h1>
			<hr />
			<h2>关于对象的回顾</h2>
			<p>Javascript是一种面向对象的语言，因此可以使用面向对象的思想来进行
javascript程序设计</p>
			<p>
对象就是由一些彼此相关的属性和方法集合在一起而构成的一个数据实体。</p>
			<p><img src="img/对象示例.png"/></p>
			<h2>Date()对象</h2>
			<details>
				<summary>日期对象用来处理日期和时间</summary>
				<ul>
					<li>var myDate = new Date();//默认生成当前时间</li>
					<li>var myDate1 = new Date(10000000);//填一个参数,即毫秒数,生成的时间为1970.1.1加上毫秒数的时间</li>
					<li>var myDate2 = new Date("2017.1.20 08:10:30");//传入日期字符串</li>
					<li>var myDate3 = new Date(2017,0,13,8,30,20,100);//分别传入年/月/日... 这里注意月份从0开始</li>
					<li>var myDate = new Date();</li>
					<li>myDate.getFullYear();    //获取完整的年份(4位,1970-????)
</li>
					<li>myDate.getMonth();       //获取当前月份(0-11,0代表1月)</li>
					<li>myDate.getDate();        //获取当前日(1-31)
</li>
					<li>myDate.getDay();         //获取当前星期X(0-6,0代表星期天)
</li>
					<li>myDate.getTime();        //获取当前时间(从1970.1.1开始的毫秒数)
</li>
					<li>myDate.getHours();       //获取当前小时数(0-23)
</li>
					<li>myDate.getMinutes();     //获取当前分钟数{0-59</li>
					<li>myDate.getSeconds();     //获取当前秒数(0-59)
</li>
					<li>myDate.getMilliseconds();    //获取当前毫秒数(0-999)
</li>
					<li>myDate.setFullYear(2019);//对已经生成的日期再次设置时间....其他关于日期的设置自己尝试</li>
					<li>myDate.toLocaleDateString();     //获取当前日期
</li>
					<li>var mytime=myDate.toLocaleTimeString();     //获取当前时间</li>
					<li>myDate.toLocaleString();        //获取日期与时间</li>
					<li>练习:计时器</li>
					<pre>
						setInterval(function(){
							var d = new Date();
							document.write(d.getFullYear()+"&nbsp; "+d.getDate()+"&nbsp; "+d.getHours()+"&nbsp; "+d.getMinutes()+"&nbsp; "+d.getSeconds()+"<br/>");
						},1000)
					</pre>
				</ul>
			</details>
			<h2>Math对象</h2>
			<details>
				<summary>Math 对象用来处理复杂的数学运算。</summary>
				<ul>
					<li>Math对象是javascript的一个全局对象，不需要用new 创建
					<li>console.log(Math.PI);//PI是大写</li>
</li>
					<li>Math.abs(-2);           该方法可返回一个数的绝对值。
</li>
					<li>Math.round(5.5);      该方法可把一个数字舍入为最接近的整数。</li>
					<li>Math.random();      该方法可返回介于 0（包含） ~ 1（不包含） 之间的一个随机数。</li>
					<li>Math.ceil(1.4);         ceil()   方法返回大于等于x的最小整数。（取大整）</li>
					<li>Math.ceil(1.4);         ceil()   方法返回大于等于x的最小整数。（取大整）
</li>
					<li>Math.floor(1.6);       floor() 方法返回小于等于x的最大整数。（取小整）
</li>
					<li>Math.pow(4,3);        pow() 方法返回 x 的 y 次幂。  （4的3次方）
</li>
					<li>练习:创建一个函数,可以求圆的面积</li>
					<pre>
						function mj(r){
							console.log(Math.PI*r*r)
						}
						mj(5);
					</pre>
					
					<li>练习:如何设置随机数在[5,10)范围内,顺便测试一下自己的电脑性能</li>
					<li>公式:var myRan = Math.random()*(最大值-最小值)+最小值</li>
					<pre>
						var lastTime = new Date().getTime()
						for(var i= 0;i&lt;1000000;i++){
							var ran = Math.floor(Math.random()*5+5);//5到10(不包括)之间的整数
							console.log(ran);
						}
						var curTime = new Date().getTime();
						alert((curTime-lastTime)/1000);
					</pre>
					
				</ul>
			</details>
			<h2>Array()数组对象</h2>
			<details>
				<summary>数组对象是非常重要的内置对象,应用及其广泛,非常重要</summary>
				<ul>
					<li>一系列数据有序排列形成的一个集合就是数组</li>
					<li>访问数组的元素是通过下标来获取(下标是从0开始)</li>
					<pre>
						var arr = [121,22,322,4,37,89,2,45];
						arr[0];//1
						arr[2];//false
						for(var i=0;i&lt;arr.length;i++){
							console.log(arr[i]);
						}
						for( var k in arr){
							console.log(arr[k]);
						}
						var arr2 = ["a",{name:'bgg'},[1,2,3],[4,5,6],"d"];//数组的嵌套
						arr2[1].name;
						arr2[2][2];
						arr2[3][2];
					</pre>
					<li>var week = new Array();
</li>
					<li>var week = new Array(‘星期一’ , ‘星期二, ‘星期三’);
</li>
					<li>var week = [‘星期一’ , ‘星期二, ‘星期三’];
</li>
					<li>var arr4 = new Array(2);//定义数组的长度是2,但并不是绝对的</li>
					<pre>
						arr4[0] = "wen";
						arr4[1] = "piao";
						arr4[2] = "ni";
						console.log(arr4[1]);
					</pre>
					<li>获取数组的长度 .length：
</li>
					<li>获取数组下标所对应的值：	alert(week[0]);
</li>
					<li>将一个或多个新元素添加到数组结尾，并返回数组新长度<br />
var week_len = week.push(‘星期四’,‘星期五’);  </li>
					<li>将一个或多个新元素添加到数组开始，数组中的元素自动后移，返回数组新长度<br />
var week_len = week.unshift(‘星期日’);  </li>
					<li>将一个或多个新元素插入到数组的指定位置，插入位置的元素自动后移，返回""。
arr3.splice(0,0,“abc”); <br />
document.write(arr3[0]);
</li>
					<li>数组元素删除：<br />
var del = ["aa",23,345,56,34,"bb"];<br />
var del_last = del.pop(); <br />       //移除最后一个元素并返回该元素值
var del_first = del.shift();<br />      //移除最前一个元素并返回该元素值，数组中元素自动前移
var del_arr = del.splice(0,2);<br /> //删除从指定位置deletePos开始的指定数量deleteCount的元素，数组形式返回所移除的元素<br />
document.write(del_arr);
</li>
				<li>合并</li>
				<pre>
					var arr1 = ["bgg","圣教","一统江湖"];
					var conArr = arr.concat(arr1);//返回合并后的数组,不改变原数组
					console.log(conArr);
					//ES6的合并方法
					console.log([1,2,3,...arr1]);
				</pre>
				<li>join()方法将数组转换为字符串</li>
				<pre>
					var strArr = conArr.join("-");//返回处理后的字符串
					console.log(strArr);
				</pre>
				<li>排序sort()</li>
				<pre>
					arr.sort();//默认是以ascII码顺序为依据进行排序,会改变元素组
					console.log(arr);
					arr.sort(function(a,b){
						return a-b;//如果return出一个正数,系统会认为a&gt;;return一个负数,系统会任何a&lt;b;如果return一个0,系统会认为a==b;
					})
					console.log(arr);
				</pre>
				<li>查找</li>
				<pre>
					var tem4 = arr.indexOf(22);//返回查找到的第一个元素的下标值,如果找不到返回-1
					console.log(tem4);
				</pre>
				<li>练习,生成5个不同的随机整数</li>
				<pre>
					var difRan = [];
					for(var i=0;i&lt;5;i++){
						var ran = Math.floor(Math.random()*10);
						difRan.indexOf(ran)==-1?difRan.push(ran):i--;
					}
					console.log(difRan);
				</pre>
				<li>映射map()方法</li>
				<pre>
					var mapArr = arr.map(function(value,index,arr){
						return value*value;//返回新数组
					})
					console.log(mapArr);
				</pre>
				<li>过滤filter()方法</li>
				<pre>
					var arr7 = [
					{name:"BGG",sex:"boy",job:"教主",age:18},
					{name:"wen",sex:"woman",job:"大护法",age:18},
					{name:"piao",sex:"boy",job:"堂主",age:8},
					{name:"hang",sex:"girl",job:"右使",age:10},
					{name:"shengming",sex:"boy",job:"左使",age:9},
					{name:"hongxiang",sex:"woman",job:"saodi",age:6}
				]
				var boyArr = arr7.filter(function(value,index,arr){
					return value.age > 10 ;
				})
				console.log(boyArr);
				</pre>
				</ul>
			</details>
			<h2>String()对象</h2>
			<details>
				<summary>String 对象用来处理文本。</summary>
				<ul>
					<li>事实上任何一个字符串常量都是一个String对象,可以将其直接作为对象来使用。
</li>
					<li>获得字符串长度：</li>
					<li>提取字符串：<br />
					<h4>1.charAt()方法</h4>
	var str = "HELLO WORLD";<br />
	var n = str.charAt(2); //返回指定位置的字符。<br />

	<h4>2.substr()方法</h4>
	var str = ‘hello’;<br />
	alert(str.substr(0,2);//传入起始位数，截取的长度，返回的是’he’<br />

 	<h4>3. substring()方法</h4>
	alert(str.substring(0,3))//传入开始的位置，结束的位置 &lt;3，返回的是'hel'<br />


					</li>
					<li>查找替换字符串：<br />
					<h4>1. indexOf()和lastIndex()方法</h4>
	var str="Hello world, welcome to the universe.";<br />
	alert(str.indexOf(“welcome”);//可返回某个指定的字符串值在字符串中首次出现的位置。<br />
	alert(str.lastIndexOf(‘e’));	//查找字符最后一次出现的位置<br />


					<h4>2. replace()方法</h4>
	var str="Visit Microsoft!";<br />
	var n=str.replace("Microsoft","W3CSchool");<br />//用于在字符串中用一些字符替换另一些字符，或替换一个与正则表达式匹配的子串。<br />
	

					<h4>3. search()方法</h4>
	var str="Visit W3CSchool!";<br />
var n=str.search(“W3CSchool”);//查找指定的字符串或与正则表达式相匹配的子字符串
</li>
					<li>
						拼接字符：
						<h4>1.concat</h4>
	var str1 = "Hello ";<br />
	var str2 = "world!";<br />
	var n = str1.concat(str2); //concat() 方法用于连接两个或多个字符串。
	
						<h4>2.字符串拼接符</h4>
       	var str1 = str1 + str2; //+号判断左右两边，如果有一边是字符串，则该+号为拼接作用<br />

					</li>
					<li>其他方法：
					<h4>1.toLowerCase() 方法</h4>
	var str="Hello World!”;<br />
	document.write(str.toLowerCase());//用于把字符串转换为小写<br />

					<h4>2.toUpperCase() 方法</h4>
	var str="Hello world!";<br />
	document.write(str.toUpperCase());//用于把字符串转换为大写。<br />
					</li>
				</ul>
			</details>
		</div>
	</body>
</html>
